package com.java.lambda.exercise;
import java.util.function.IntBinaryOperator;

/**
 * lambda表达式+匿名内部类练习。
 */
public class LambdaDemo_01 {
    public static void main(String[] args) {
//        new Thread(() -> System.out.println("新线程张run方法被执行了。")).start();
        
        // 先写匿名内部类，然后再点击 IntBinaryOperator， 在它上面  ALT + ENTER ,就可以自动生成lambda表达式。
        
        /*
         * 调用calculate方法(匿名内部类)。
         */
        int i = calculateNum(new IntBinaryOperator() {
            @Override
            public int applyAsInt(int left, int right) {
                return left + right;
            }
        });
        System.out.println(i);
        
        /*
         * lambda表达式写法：
         * (重写方法的方法列表)  ->
         *  return 重写方法的方法体
         */
        int j = calculateNum((int left, int right) -> {
            return left + right;
        });
        System.out.println(j);
        
        /*
        进一步简写lambda表达式
         */
        int k = calculateNum((left, right) -> left + right);
        System.out.println(k);
    }
    
    public static int calculateNum(IntBinaryOperator operator) {
        int a = 10;
        int b = 20;
        return operator.applyAsInt(a, b);
    }
}
